import { Module, Global } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { CacheModule } from './cache/cache.module';
import { MonitoringModule } from './monitoring/monitoring.module';
import { LoggingModule } from './logging/logging.module';
import { ExceptionModule } from './exception/exception.module';
import { QueueModule } from './queue/queue.module';
import { EventModule } from './event/event.module';
import { SecurityModule } from './security/security.module';
import { TracingModule } from './tracing/tracing.module';
import { SchedulerModule } from './scheduler/scheduler.module';
import { InitModule } from './init/init.module';
import { ContextModule } from './context/context.module';
// import { SwaggerModule } from './swagger/swagger.module';
import { DatabaseModule } from './database/database.module';
// import { ValidationModule } from './validation/validation.module'; // 已合并到 PipesModule
import { ResponseModule } from './response/response.module';
import { UtilsModule } from './utils/utils.module';
import { PipesModule } from './pipes/pipes.module';
import { SystemModule } from './system/system.module';
import { LoaderModule } from './loader/loader.module';
import { BaseModule } from './base/base.module';
import { InterceptorsModule } from './interceptors/interceptors.module';
import { LibrariesModule } from './libraries/libraries.module';
import { PluginsModule } from './plugins/plugins.module';

/**
 * 通用模块 - 基础设施层
 * 基于 NestJS 官方示例实现
 *
 * 包含框架基础能力：
 * - 基础服务（缓存、日志、监控、异常）
 * - 自研工具类
 * - 第三方工具库封装
 * - 基础功能插件
 * - 框架基础设施
 */
@Module({
  imports: [
    // 核心基础设施模块（需要全局访问）
    DatabaseModule, // 数据库连接
    CacheModule, // 缓存服务
    MonitoringModule, // 监控服务
    LoggingModule, // 日志服务
    ExceptionModule, // 异常处理
    QueueModule, // 队列服务
    EventModule, // 事件服务
    ResponseModule, // 响应处理

    // 自研工具类
    UtilsModule,

    // 第三方工具库封装
    LibrariesModule,

    // 基础功能插件
    PluginsModule,

    // 框架基础设施
    SecurityModule,
    TracingModule,
    SchedulerModule,
    InitModule,
    ContextModule,
    // SwaggerModule,
    SystemModule,
    LoaderModule,
    BaseModule,
    InterceptorsModule,
    PipesModule,
  ],
  exports: [
    // 核心基础设施服务
    DatabaseModule,
    CacheModule,
    MonitoringModule,
    LoggingModule,
    ExceptionModule,
    QueueModule,
    EventModule,
    ResponseModule,

    // 自研工具类
    UtilsModule,

    // 第三方工具库封装
    LibrariesModule,

    // 基础功能插件
    PluginsModule,

    // 框架基础设施
    SecurityModule,
    BaseModule,
    InterceptorsModule,
  ],
})
export class CommonModule {}
